//---------------------------------------------------------------------------
#pragma hdrstop
#include "classeTabela.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)

using namespace std;

Tabela::Tabela(int posX, int posY)
{
	srand(time(NULL));
	construtorMuitoLouco(posX, posY);
}
//---------------------------------------------------------------------------
Tabela::~Tabela()
{
	destrutorMuitoLouco();
}
//---------------------------------------------------------------------------
void Tabela::construtorMuitoLouco(int i, int j)
{
	int x, y;

	nmrLinhas = i;
	nmrColunas = j;

	this->tblTabela = new AnsiString*[nmrLinhas];

	for(x = 0; x < nmrLinhas; x++)
	{
		this->tblTabela[x] = new AnsiString[nmrColunas];
	}

	for(x = 0; x < nmrLinhas; x++)
	{
		for(y = 0; y < nmrColunas; y++)
		{
			tblTabela[x][y] = "";
		}
	}
}
//---------------------------------------------------------------------------
void Tabela::destrutorMuitoLouco()
{
	int i;

	for(i= 0; i < nmrLinhas; i++)
	{
		delete tblTabela[i];
		tblTabela[i] = NULL;
	}

	delete tblTabela;
	tblTabela = NULL;
}
//---------------------------------------------------------------------------
AnsiString Tabela::getConteudo(int i, int j)
{
	return tblTabela[i][j];
}
//---------------------------------------------------------------------------
void Tabela::dimensionar(int i, int j)
{
	int x, y;
	int auxX = nmrLinhas, auxY = nmrColunas;
	AnsiString **tblTabelaAux;

	nmrLinhas = i;
	nmrColunas = j;

	if (tblTabela)
	{
		tblTabelaAux = new AnsiString*[i];
		for(x = 0; x < i; x++)
		{
			tblTabelaAux[x] = new AnsiString[j];
		}

		int minx = (auxX < i) ? auxX : i;
		int miny = (auxY < j) ? auxY : j;

		for(x = 0; x < i; x++)
		{
			for(y = 0; y < j; y++)
			{
				tblTabelaAux[x][y] = "";
			}
		}
				
		for(x = 0; x < minx; x++)
		{
			for(y = 0; y < miny; y++)
			{
				tblTabelaAux[x][y] = tblTabela[x][y];
			}
		}

		/*for(x = 0; x < auxX; x++)
		{
			delete tblTabela[x];
		}*/

		delete tblTabela;		
		tblTabela = tblTabelaAux;
	}
}
//---------------------------------------------------------------------------
void Tabela::completar()
{
	int i, j;

	for (i = 0; i < nmrLinhas; i++)
	{
		for (j = 0; j < nmrColunas; j++)
		{
			tblTabela[i][j] = rand() %256;
		}
	}
}
//---------------------------------------------------------------------------
void Tabela::inserir(AnsiString strConteudo, int i, int j)
{
	tblTabela[i][j] = strConteudo;
}
//---------------------------------------------------------------------------
void Tabela::remover(int i, int j)
{
	tblTabela[i][j] = "";
}
//---------------------------------------------------------------------------
void Tabela::limpar()
{
	int i, j;

	for(i = 0; i < nmrLinhas; i++)
	{
		for(j = 0; j < nmrColunas; j++)
		{
			tblTabela[i][j] = "";
		}
	}
}
//---------------------------------------------------------------------------
int Tabela::getNumeroLinhas()
{
	return nmrLinhas;
}
//---------------------------------------------------------------------------
int Tabela::getNumeroColunas()
{
	return nmrColunas;
}
//---------------------------------------------------------------------------

